#ifndef PANELELEGIRPARTIDA_H_
#define PANELELEGIRPARTIDA_H_
#include <gtkmm.h>
#include <map>
#include <string> 
#include "PanelFondo.h"
#include "SalaPartida.h"

#include "Configuracion.h"

class Juego;

class PanelElegirPartida: public PanelFondo {
    friend class Juego;

    Gtk::Button button_crear, button_cerrarJuego;

    /* Para elegir el nivel y la cantidad de jugadores */
    Gtk::Label nivelLabel;
    Gtk::Label cantJugadoresLabel;

    Gtk::SpinButton nivelSpinButton;
    Gtk::SpinButton cantJugadoresSpinButton;

    std::map<int, SalaPartida *> hashPartidas; //id, partida

    int xScroll, yScroll, partidas;

    void ajustarCoordenadasInsercion();
    void inicializarCoordenadasInsercion();
    void actualizarPosPartidas();

    void setNivelMaximo(int nivelMaximo);
    void setCantidadJugadores();

    std::map<int, int> *jugadoresPorNivel;

  public:
    explicit PanelElegirPartida(int, int);
    virtual ~PanelElegirPartida();

    void agregarConectado(int idPartida, std::string jug);

    void borrarPartida(int id);

    void agregarPartida(SalaPartida *sala);
    int obtenerIdPartida();
    void borrarConectado(int idPartida, std::string nombre);
    void borrarPartidas();

    void configurar(int nivelMaximo, std::map<int, int> *jugadoresPorNivel);

    int obtenerNivel();
    int obtenerCantJugadores();

    void bloquearPartidas(int idPartida);
    void desbloquearPartidas();
};

#endif
